# _*_ coding: UTF-8 _*_
# @Time     : 2021/11/2 11:28
# @Author   : yangshuaishuai
# @Site     : http://www.hzdledu.cn/
# @File     : w3s2_动作链条ActionChains.py
# @Software : PyCharm

from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
#ActionChains动作链条
#可以实现基本操作，还可以实现鼠标的操作等高级动作,可以将多个动作连接为一个动作链条
#最后一定要加.perform()才能执行


def foo1():
    driver = webdriver.Chrome()
    driver.maximize_window()

    driver.get('https://map.baidu.com/@13373075,3519024,17z')
    time.sleep(3)
    #模拟鼠标的右键
    #参数：element=None. 1.指定点击的元素， 2，如果参数为空，点击鼠标当前位置（当没有代码移动鼠标，鼠标在0,0点）
    ActionChains(driver).context_click().perform()#匿名对象
    time.sleep(1)

    #模拟鼠标左键双击
    # 参数：element=None. 1.指定点击的元素， 2，如果参数为空，点击鼠标当前位置（当没有代码移动鼠标，鼠标在0,0点）
    ActionChains(driver).double_click().perform()
    time.sleep(1)

    #模拟按住鼠标左键不放
    # 参数：element=None. 1.指定点击的元素， 2，如果参数为空，点击鼠标当前位置（当没有代码移动鼠标，鼠标在0,0点）
    ActionChains(driver).click_and_hold().perform()
    time.sleep(1)

    #移动鼠标
    #move_by_(xoffset,yoffset):xoffset,x轴移动距离，yoffset,y轴移动距离
    ActionChains(driver).move_by_offset(500,0).perform()
    # move_to_element(source, target) 移动鼠标到某个元素
    time.sleep(1)

    #释放鼠标
    ActionChains(driver).release().perform()
    time.sleep(1)

    #拖拽鼠标
    # drag_and_drop_by_offset(element,xoffset, yoffset0):element:拖拽元素；xoffset,x轴移动距离；yoffset,y轴移动距离
    ActionChains(driver).drag_and_drop_by_offset(None,500,0).perform()
    time.sleep(1)
    #模拟键盘输入
    ActionChains(driver).send_keys_to_element(driver.find_element_by_id('sole-input'),'成都汇智动力').perform()
    time.sleep(1)
    #模拟鼠标左键单击
    ActionChains(driver).click(driver.find_element_by_id('search-button')).perform()
    time.sleep(1)

    # key_down(key)模拟键盘按下某个按键不放
    #
    # key_up(key)模拟键盘放开某个按键

    #动作链条,中间加，pause（）设置操作间隔时间
    #多个动作通过，连接成动作链条，最后.perform执行
    ActionChains(driver).click_and_hold().move_by_offset(500,0).release().perform()
    time.sleep(1)








    driver.quit()


if __name__ == '__main__':
    foo1()